package mediatheque.controller;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collection;

import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

import tools.ComboItem;

import mediatheque.model.DocumentModel;
import mediatheque.model.EmprunteurModel;
import mediatheque.model.MediathequeModel;
import mediatheque.model.PretModel;
import mediatheque.view.DocumentChooser;
import mediatheque.view.EmprunteurChooser;

public class DocumentChooserController extends AbstractController {

	protected DocumentChooser view;
	protected PretModel pret;
	
	protected String valeurChoisie;
	
	
	public DocumentChooserController(MediathequeModel model, final DocumentChooser view) {
		this(model, view, null);		
	}
	
	public DocumentChooserController(MediathequeModel model, final DocumentChooser view, PretModel pret) {
		super(model);
		this.view = view;
		this.pret = pret;
		this.valeurChoisie = "";
		
		if(pret != null){			
			view.setValeurDefaut(pret.getIdentifiantDocument());
		}

		view.setResultat(model.getListeDocumentsCombo().toArray());
		view.addChangeChampsRechercheListener(new DocumentListener() {
			@Override
			public void removeUpdate(DocumentEvent arg0) {
				rechercher();
			}
			
			@Override
			public void insertUpdate(DocumentEvent arg0) {
				rechercher();
			}
			
			@Override
			public void changedUpdate(DocumentEvent arg0) {
				rechercher();
			}
		});
		
		view.addChoisirListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				valeurChoisie = view.getValeurDocument();
				view.dispose();
			}
		});
	}
	
	public String getValeurChoisie(){
		return valeurChoisie;
	}

	protected void rechercher() {
		String id = view.getValeurIdentifiant();
		String nom = view.getValeurNom();
		String description = view.getValeurDescription();
		
		Collection<DocumentModel> l = model.rechercheDocuments(id, nom, description, "", "");
		Collection<ComboItem> tmp = new ArrayList<ComboItem>();
		for (DocumentModel d : l) {
			tmp.add(new ComboItem(d.getIdentifiant(), d.getNom()));
		}
		view.setResultat(tmp.toArray());
	}
	

}
